// Description: 重构返回数据格式
/*

0-999: http状态码
1000- 9999: 公共错误码
10000-19999: 用户相关错误码
20000-29999: 会员相关错误码
*/


// 依据状态码划分日志等级
function accToStatusDivideGrade(status) {
  if(status >= 200 && status < 400) return 'info';
  else if ( status >= 400 && status < 500) return 'warn';
  else if ( status >= 500 ) return 'error'
  return 'info'
}
 



class Resend {
  constructor (type) {
    this.type = type;
  }
  // json格式返回
  sendJson (req, res, send = {} ) {
    const { code = 200, msg = 'SUCCESS', data = {}, status = 200, logMsg = {} } = send;
    // 记录
    const grade = accToStatusDivideGrade(status)
    res.log[grade](logMsg, msg)
    // 释放连接
    // console.log(req,'23')
    req.connection.release();
    res.status(status).json({
      code,
      msg,
      data: JSON.stringify(data) === '{}' ? Object.assign({}, data, { token: req.newToken}) : data
    })
  }
}

module.exports.existSend = function ( req,res,next) {
  res.resend = new Resend('http');
  next();
}
